/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PCargaMasiva.java
 *
 * Created on Jun 16, 2012, 6:04:27 PM
 */
package vistas;
import cliente.conexionPP;
import cliente.conexionRE;
import java.rmi.RemoteException;
import javax.swing.*;   
import java.io.*;
import javax.swing.filechooser.*;      
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Stev
 */
public class PCargaMasiva extends javax.swing.JPanel {
     private conexionRE conexion = new conexionRE();
     private conexionPP conexionPP= new conexionPP();
     private String IP_PP;
     private String IP_RE;

    /** Creates new form PCargaMasiva */
    public PCargaMasiva(String IP_PP, String IP_RE) {
          initComponents();
          this.IP_PP=IP_PP;
          this.IP_RE=IP_RE;
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textArea = new javax.swing.JTextArea();
        jTextField1 = new javax.swing.JTextField();
        Boton_CargarArchivo = new javax.swing.JButton();
        Boton_Ejecutar = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();

        setMaximumSize(new java.awt.Dimension(433, 291));
        setMinimumSize(new java.awt.Dimension(433, 291));
        setName(""); // NOI18N
        setPreferredSize(new java.awt.Dimension(433, 291));

        jPanel1.setMaximumSize(new java.awt.Dimension(433, 291));
        jPanel1.setMinimumSize(new java.awt.Dimension(433, 291));
        jPanel1.setPreferredSize(new java.awt.Dimension(433, 291));

        jLabel3.setText("Direccion Archivo:");

        textArea.setColumns(20);
        textArea.setRows(5);
        jScrollPane1.setViewportView(textArea);

        Boton_CargarArchivo.setText("Abrir archivo");
        Boton_CargarArchivo.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                Boton_CargarArchivoresolver(evt);
            }
        });
        Boton_CargarArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Boton_CargarArchivoActionPerformed(evt);
            }
        });

        Boton_Ejecutar.setText("Ejecutar");
        Boton_Ejecutar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Boton_EjecutarActionPerformed(evt);
            }
        });

        jLabel2.setText("Resultado:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(Boton_CargarArchivo)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(Boton_Ejecutar, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jLabel2)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 401, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(22, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Boton_Ejecutar)
                    .addComponent(Boton_CargarArchivo))
                .addGap(5, 5, 5)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(22, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        jPanel1.getAccessibleContext().setAccessibleName("Carga Masiva");
    }// </editor-fold>//GEN-END:initComponents

    private void Boton_CargarArchivoresolver(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_Boton_CargarArchivoresolver
        
}//GEN-LAST:event_Boton_CargarArchivoresolver

    private void Boton_CargarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Boton_CargarArchivoActionPerformed
        //Creo un filtro para que solo se pueda abrir archivo .txt
        FileNameExtensionFilter filter= new FileNameExtensionFilter("Archivos de texto","txt");
        //Creo el filechooser
        JFileChooser fileChooser = new JFileChooser();
        //Se aplica el filtro en mi filechooser recien creado
        fileChooser.setFileFilter(filter);
        //La ventana para buscar archivo dira..
        fileChooser.setDialogTitle("Abrir archivo...");
        
        //Si se presiona el botón comprueba si el archivo es correcto.
        int seleccion = fileChooser.showOpenDialog(null); //Variable para determinar si hubo presion de boton
        if (seleccion== JFileChooser.APPROVE_OPTION){
            File file= fileChooser.getSelectedFile();
            jTextField1.setText(String.valueOf(file));
        }
}//GEN-LAST:event_Boton_CargarArchivoActionPerformed

    private void Boton_EjecutarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Boton_EjecutarActionPerformed
        
        //Variables para trabajar con el texto
        String[] contLinea;
        File archivo;
        FileReader fr=null;
        BufferedReader br;
        
        String Resultado=null;
        
        
        try {
            //Intentamos conectarnos con el servidor
            //Si hay exito empezamos a consumir servicios
            if (conexion.iniciarRegistry(IP_RE) && conexionPP.iniciarRegistry(IP_PP)){
                JOptionPane.showMessageDialog(this, "Conexión exitosa", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                
                
                //Abro archivo y saco las lineas de texto
                try {
                    archivo = new File(jTextField1.getText());
                    fr = new FileReader(archivo);
                    br = new BufferedReader(fr);
                    // Lectura del fichero linea por linea
                    String linea;
                    while((linea=br.readLine())!=null){
                        
                        //todo = todo + linea + "\n";  //En caso de querer guardar todo el texto en un string
                        contLinea= linea.split(",");  //Guardo el contenido de linea en un arreglo
                       
                        
           /*Haremos dos cosas con el contenido de linea:
            * Primero la mandamos al server para realizar operacion.
            * Segundo mostramos que dice en la ventana de cliente.*/
                        
                        //Llamamos al método que necesitamos que haga la operacion
                        
                        if (contLinea[0].equals("regRE")){
                            try{
                            Resultado = conexion.getServidor().regRE(contLinea[1],contLinea[2],contLinea[3],contLinea[4]);
                            }
                            catch(Exception e){Resultado= "Operación ignorada";}
                         }
                        else if (contLinea[0].equals("regREPP")){
                            try{
                            Resultado = conexionPP.getServidor().regREPP(contLinea[1],contLinea[2],contLinea[3],contLinea[4],contLinea[5]);
                            }
                            catch(Exception e){Resultado= "Operación ignorada";}
                            
                        }
                        else if (contLinea[0].equals("regPP")){
                            try{
                            Resultado = conexionPP.getServidor().regPP(contLinea[1],contLinea[2]);
                            }
                            catch(Exception e){Resultado= "Operación ignorada";}
                        }
                        else if (contLinea[0].equals("desPP")){
                            try{
                            Resultado = conexionPP.getServidor().desPP(contLinea[1]);
                            }
                            catch(Exception e){Resultado= "Operación ignorada";}
                            
                        }
                        else{ Resultado= "Operación ignorada";}
                        
                        
                        linea=linea+","+Resultado;
                        Resultado=null;
                        textArea.append(linea + "\n");
                        
                        
                        
                        
                        
                        
                        /*Fin operaciones sobre el texto*/
                    }
                }
                
                catch(Exception e){e.printStackTrace();} finally{
                    try{
                        if( null != fr ){fr.close();}
                    } catch (Exception e2){e2.printStackTrace();}
                }
                
                
                
                
            }//Fin if de conexion
            else{
                JOptionPane.showMessageDialog(this, "No se pudo Conectar", "Mensaje", JOptionPane.ERROR_MESSAGE);
            }
            
        } catch (RemoteException ex) {
            Logger.getLogger(PCargaMasiva.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
    }//GEN-LAST:event_Boton_EjecutarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton Boton_CargarArchivo;
    private javax.swing.JButton Boton_Ejecutar;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextArea textArea;
    // End of variables declaration//GEN-END:variables
}
